package com.auction.service;

import com.auction.dto.AuctionDTO;
import com.auction.dto.AuctionPageQueryDTO;
import com.auction.pojo.Auction;
import com.auction.pojo.PageResult;
import com.auction.vo.AuctionDetailVO;
import com.auction.vo.AuctionVO;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
import java.util.List;

public interface AuctionService {
    /**
     * 发布拍卖品
     * 
     * @param auctionDTO
     * @param sellerId
     * @return
     */
    void publish(AuctionDTO auctionDTO, Long sellerId);

    /**
     * 更新拍卖品
     * 
     * @param auctionDTO
     * @param sellerId
     */
    void update(AuctionDTO auctionDTO, Long sellerId);

    /**
     * 获取拍卖品详情
     * 
     * @param id
     * @return
     */
    AuctionVO getByIdVO(Long id);

    /**
     * 分页查询拍卖品
     *
     * @param auctionPageQueryDTO
     * @return
     */
    PageResult page(AuctionPageQueryDTO auctionPageQueryDTO);

    /**
     * 取消拍卖
     *
     * @param id
     * @param sellerId
     */
    void cancel(Long id, Long sellerId);

    /**
     * 审核拍卖品
     *
     * @param id     拍卖品ID
     * @param status 审核状态（APPROVED-通过，REJECTED-拒绝）
     * @return 是否审核成功
     */
    @Transactional
    boolean reviewAuction(Long id, String status);

    /**
     * 根据分类id查询拍卖品列表
     * 
     * @param categoryId
     * @return
     */
    List<AuctionVO> list(Long categoryId);

    /**
     * 删除拍卖品
     * 
     * @param id
     * @param sellerId
     */
    void delete(Long id, Long sellerId);

    /**
     * 根据ID获取拍卖品
     *
     * @param id 拍卖品ID
     * @return 拍卖品信息
     */
    Auction getById(Long id);
}